#!/bin/bash

# Lenovo笔记本无线问号问题修复脚本
# 修复Realtek RTL8852AE驱动导致的WiFi连接问题

set -e

echo "========================================"
echo "Lenovo笔记本无线问号问题修复脚本"
echo "========================================"

# 检查是否为root用户
if [[ $EUID -ne 0 ]]; then
   echo "此脚本需要root权限运行"
   echo "请使用: sudo $0"
   exit 1
fi

echo "正在修复无线连接问题..."

# 1. 记录当前连接状态
echo "1. 记录当前网络状态..."
CURRENT_CONNECTION=$(nmcli device status | grep "wlp4s0.*connected" | awk '{print $4}' || echo "未连接")
echo "当前WiFi连接: $CURRENT_CONNECTION"

# 2. 停止NetworkManager服务
echo "2. 停止NetworkManager服务..."
systemctl stop NetworkManager

# 3. 卸载rtw89相关驱动模块
echo "3. 卸载无线驱动模块..."
modprobe -r rtw89_8852ae 2>/dev/null || true
modprobe -r rtw89_8852a 2>/dev/null || true
modprobe -r rtw89_pci 2>/dev/null || true
modprobe -r rtw89_core 2>/dev/null || true

# 4. 等待模块完全卸载
sleep 2

# 5. 重新加载驱动模块
echo "4. 重新加载无线驱动模块..."
modprobe rtw89_core
modprobe rtw89_pci
modprobe rtw89_8852a
modprobe rtw89_8852ae

# 6. 等待驱动初始化
sleep 3

# 7. 重启NetworkManager服务
echo "5. 重启NetworkManager服务..."
systemctl start NetworkManager

# 8. 等待服务启动
sleep 5

# 9. 检查无线接口状态
echo "6. 检查无线接口状态..."
if nmcli device status | grep -q "wlp4s0.*connected"; then
    echo "✅ 无线连接已恢复正常！"
    echo "当前连接信息："
    nmcli device status | grep wlp4s0
elif nmcli device status | grep -q "wlp4s0.*disconnected"; then
    echo "✅ 无线接口已恢复正常，但未连接到网络"
    echo "请手动连接到WiFi网络"
else
    echo "⚠️  无线接口状态异常，尝试额外修复..."
    
    # 额外修复：重启整个网络服务
    systemctl restart systemd-networkd
    systemctl restart wpa_supplicant
    
    # 等待服务重启
    sleep 3
    
    # 再次检查
    if nmcli device status | grep -q "wlp4s0"; then
        echo "✅ 额外修复成功，无线接口已恢复正常"
    else
        echo "❌ 修复失败，可能需要重启系统"
    fi
fi

# 10. 尝试恢复之前的连接
if [[ "$CURRENT_CONNECTION" != "未连接" ]]; then
    echo "7. 尝试恢复之前的WiFi连接..."
    nmcli connection up "$CURRENT_CONNECTION" 2>/dev/null || echo "⚠️  自动重连失败，请手动连接"
fi

# 11. 显示当前网络状态
echo ""
echo "当前网络设备状态："
nmcli device status

echo ""
echo "========================================"
echo "修复脚本执行完成"
echo "如果问题仍未解决，请重启系统"
echo "========================================"